﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
using BBMS.DLL.Base;
using MySql.Data.MySqlClient;

namespace BBMS.DLL.DataContract
{
    public class ImportList
    {
        public static String ImportArrayList(ArrayList arr, ImportMode importMode)
        {
            String result = "";
            String msg = "";
            MySqlTransaction tn = null;
            try
            {
                MySqlConnection con = new MySqlConnection(Base.Config.ConnectionString());
                con.Open();
                tn = con.BeginTransaction();

                if (importMode == ImportMode.InsertNews)
                {
                    for (int i = 0; i < arr.Count; i++)
                    {
                        MySqlCommand cmd = con.CreateCommand();
                        cmd.Transaction = tn;
                        msg = ((ObjectBase)arr[i]).InsertNew(cmd);
                        if (msg == "Lỗi: Lỗi thao tác tới cơ sở dữ liệu.") // loi thao tac csdl
                        {
                            result = msg;
                        }
                    }
                }
                else if (importMode == ImportMode.UpdateAndInsert)
                {
                    for (int i = 0; i < arr.Count; i++)
                    {
                        MySqlCommand cmd = con.CreateCommand();
                        cmd.Transaction = tn;
                        msg = ((ObjectBase)arr[i]).InsertNew(cmd);
                        if (msg == "Lỗi: Đã tồn tại đối tượng trong cơ sở dữ liệu")
                        {
                            msg = ((ObjectBase)arr[i]).Save();
                        }
                        if (msg == "Lỗi: Lỗi thao tác tới cơ sở dữ liệu.") // loi thao tac csdl
                        {
                            result = msg;
                        }
                    }                       
                    
                }
                else if (importMode == ImportMode.ReplaceAllRecord)
                {
                    MySqlCommand cmd1 = con.CreateCommand();
                    cmd1.CommandType = System.Data.CommandType.Text;
                    cmd1.CommandText = "delete from " + ((ObjectBase)arr[0]).TableName;                    
                    cmd1.Transaction = tn;
                    cmd1.ExecuteNonQuery();
                    for (int i = 0; i < arr.Count; i++)
                    {
                        MySqlCommand cmd = con.CreateCommand();
                        cmd.Transaction = tn;
                        msg = ((ObjectBase)arr[i]).InsertNew(cmd);
                        if (msg == "Lỗi: Lỗi thao tác tới cơ sở dữ liệu.") // loi thao tac csdl
                        {
                            result = msg;
                        }
                    }
                }


                tn.Commit();
                result = "Import file thành công";
                con.Close();
                con.Dispose();
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.StackTrace);
                result = "Lỗi xử lý cơ sở dữ liệu.";
                tn.Rollback();
            }
            finally
            {

                tn.Dispose();
            }
            return result;

            //if (importMode == ImportMode.InsertNews)
            //{
            //    for (int i = 0; i < arr.Count; i++)
            //    {
            //        msg = ((ObjectBase)arr[i]).InsertNew();
            //    }
            //}
            //else if (importMode == ImportMode.UpdateAndInsert)
            //{
            //    for (int i = 0; i < arr.Count; i++)
            //    {
            //        msg = ((ObjectBase)arr[i]).InsertNew();
            //        if (msg == "Existed")
            //        {
            //            msg = ((ObjectBase)arr[i]).Save();
            //        }
            //    }
            //}
            //else if (importMode == ImportMode.ReplaceAllRecord)
            //{
            //}
            //return "";
        }
    }
}
